<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/Python-3.6.2/Include/Python.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/Python-3.6.2/Include/Python.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="macros_noref.html#_UHlfUFlUSE9OX0hfMA__"><span class="b">Py_PYTHON_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_noref.html#_UHlfUFlUSE9OX0hfMA__"><span class="b">Py_PYTHON_H</span></a>
<a name="3" /><span class="True">       3:</span> <span class="k">/* Since this is a &quot;meta-include&quot; file, no #ifdef __cplusplus / extern &quot;C&quot; { */</span>
<a name="4" /><span class="True">       4:</span> 
<a name="5" /><span class="True">       5:</span> <span class="k">/* Include nearly all Python header files */</span>
<a name="6" /><span class="True">       6:</span> 
<a name="7" /><span class="True">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;patchlevel.h&quot;</span>
<a name="8" /><span class="True">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pyconfig.h&quot;</span>
<a name="9" /><span class="True">       9:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pymacconfig.h&quot;</span>
<a name="10" /><span class="True">      10:</span> 
<a name="11" /><span class="True">      11:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">limits</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="12" /><span class="True">      12:</span> 
<a name="13" /><span class="False">      13:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="macros_ref.html#_VUNIQVJfTUFYXzA_"><span class="b">UCHAR_MAX</span></a>
<a name="14" /><span class="False">      14:</span> <span class="f">#</span><span class="n">error</span> <span class="e">&quot;Something&apos;s broken.  UCHAR_MAX should be defined in limits.h.&quot;</span>
<a name="15" /><span class="True">      15:</span> <span class="f">#</span><span class="n">endif</span>
<a name="16" /><span class="True">      16:</span> 
<a name="17" /><span class="False">      17:</span> <span class="f">#</span><span class="n">if</span> <a href="macros_ref.html#_VUNIQVJfTUFYXzA_"><span class="b">UCHAR_MAX</span></a> <span class="f">!=</span> <span class="c">255</span>
<a name="18" /><span class="False">      18:</span> <span class="f">#</span><span class="n">error</span> <span class="e">&quot;Python&apos;s source code assumes C&apos;s unsigned char is an 8-bit type.&quot;</span>
<a name="19" /><span class="True">      19:</span> <span class="f">#</span><span class="n">endif</span>
<a name="20" /><span class="True">      20:</span> 
<a name="21" /><span class="False">      21:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><span class="b">__sgi</span><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="b">defined</span><span class="f">(</span><a href="macros_ref.html#_V0lUSF9USFJFQURfMA__"><span class="b">WITH_THREAD</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="f">!</span><span class="b">defined</span><span class="f">(</span><span class="b">_SGI_MP_SOURCE</span><span class="f">)</span>
<a name="22" /><span class="False">      22:</span> <span class="f">#</span><span class="n">define</span> <span class="b">_SGI_MP_SOURCE</span>
<a name="23" /><span class="True">      23:</span> <span class="f">#</span><span class="n">endif</span>
<a name="24" /><span class="True">      24:</span> 
<a name="25" /><span class="True">      25:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">stdio</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="26" /><span class="False">      26:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a>
<a name="27" /><span class="False">      27:</span> <span class="f">#</span>   <span class="n">error</span> <span class="e">&quot;Python.h requires that stdio.h define NULL.&quot;</span>
<a name="28" /><span class="True">      28:</span> <span class="f">#</span><span class="n">endif</span>
<a name="29" /><span class="True">      29:</span> 
<a name="30" /><span class="True">      30:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">string</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="31" /><span class="True">      31:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="macros_ref.html#_SEFWRV9FUlJOT19IXzA_"><span class="b">HAVE_ERRNO_H</span></a>
<a name="32" /><span class="True">      32:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><a href="macros_noref.html#_ZXJybm9fMA__"><span class="b">errno</span></a><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="33" /><span class="True">      33:</span> <span class="f">#</span><span class="n">endif</span>
<a name="34" /><span class="True">      34:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">stdlib</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="35" /><span class="True">      35:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="macros_ref.html#_SEFWRV9VTklTVERfSF8w"><span class="b">HAVE_UNISTD_H</span></a>
<a name="36" /><span class="True">      36:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">unistd</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="37" /><span class="True">      37:</span> <span class="f">#</span><span class="n">endif</span>
<a name="38" /><span class="True">      38:</span> 
<a name="39" /><span class="True">      39:</span> <span class="k">/* For size_t? */</span>
<a name="40" /><span class="False">      40:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">HAVE_STDDEF_H</span>
<a name="41" /><span class="False">      41:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">stddef</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="42" /><span class="True">      42:</span> <span class="f">#</span><span class="n">endif</span>
<a name="43" /><span class="True">      43:</span> 
<a name="44" /><span class="True">      44:</span> <span class="k">/* CAUTION:  Build setups should ensure that NDEBUG is defined on the</span>
<a name="45" /><span class="True">      45:</span> <span class="k"> * compiler command line when building Python in release mode; else</span>
<a name="46" /><span class="True">      46:</span> <span class="k"> * assert() calls won&apos;t be removed.</span>
<a name="47" /><span class="True">      47:</span> <span class="k"> */</span>
<a name="48" /><span class="True">      48:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><a href="macros_ref.html#_YXNzZXJ0XzA_"><span class="b">assert</span></a><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="49" /><span class="True">      49:</span> 
<a name="50" /><span class="True">      50:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pyport.h&quot;</span>
<a name="51" /><span class="True">      51:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pymacro.h&quot;</span>
<a name="52" /><span class="True">      52:</span> 
<a name="53" /><span class="True">      53:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pyatomic.h&quot;</span>
<a name="54" /><span class="True">      54:</span> 
<a name="55" /><span class="True">      55:</span> <span class="k">/* Debug-mode build with pymalloc implies PYMALLOC_DEBUG.</span>
<a name="56" /><span class="True">      56:</span> <span class="k"> *  PYMALLOC_DEBUG is in error if pymalloc is not in use.</span>
<a name="57" /><span class="True">      57:</span> <span class="k"> */</span>
<a name="58" /><span class="True">      58:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><a href="macros_ref.html#_UHlfREVCVUdfMA__"><span class="b">Py_DEBUG</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="b">defined</span><span class="f">(</span><a href="macros_ref.html#_V0lUSF9QWU1BTExPQ18w"><span class="b">WITH_PYMALLOC</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="f">!</span><span class="b">defined</span><span class="f">(</span><a href="macros_ref.html#_UFlNQUxMT0NfREVCVUdfMA__"><span class="b">PYMALLOC_DEBUG</span></a><span class="f">)</span>
<a name="59" /><span class="True">      59:</span> <span class="f">#</span><span class="n">define</span> <a href="macros_ref.html#_UFlNQUxMT0NfREVCVUdfMA__"><span class="b">PYMALLOC_DEBUG</span></a>
<a name="60" /><span class="True">      60:</span> <span class="f">#</span><span class="n">endif</span>
<a name="61" /><span class="False">      61:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><a href="macros_ref.html#_UFlNQUxMT0NfREVCVUdfMA__"><span class="b">PYMALLOC_DEBUG</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="f">!</span><span class="b">defined</span><span class="f">(</span><a href="macros_ref.html#_V0lUSF9QWU1BTExPQ18w"><span class="b">WITH_PYMALLOC</span></a><span class="f">)</span>
<a name="62" /><span class="False">      62:</span> <span class="f">#</span><span class="n">error</span> <span class="e">&quot;PYMALLOC_DEBUG requires WITH_PYMALLOC&quot;</span>
<a name="63" /><span class="True">      63:</span> <span class="f">#</span><span class="n">endif</span>
<a name="64" /><span class="True">      64:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pymath.h&quot;</span>
<a name="65" /><span class="True">      65:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pytime.h&quot;</span>
<a name="66" /><span class="True">      66:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pymem.h&quot;</span>
<a name="67" /><span class="True">      67:</span> 
<a name="68" /><span class="True">      68:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;object.h&quot;</span>
<a name="69" /><span class="True">      69:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;objimpl.h&quot;</span>
<a name="70" /><span class="True">      70:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;typeslots.h&quot;</span>
<a name="71" /><span class="True">      71:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pyhash.h&quot;</span>
<a name="72" /><span class="True">      72:</span> 
<a name="73" /><span class="True">      73:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pydebug.h&quot;</span>
<a name="74" /><span class="True">      74:</span> 
<a name="75" /><span class="True">      75:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;bytearrayobject.h&quot;</span>
<a name="76" /><span class="True">      76:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;bytesobject.h&quot;</span>
<a name="77" /><span class="True">      77:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;unicodeobject.h&quot;</span>
<a name="78" /><span class="True">      78:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;longobject.h&quot;</span>
<a name="79" /><span class="True">      79:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;longintrepr.h&quot;</span>
<a name="80" /><span class="True">      80:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;boolobject.h&quot;</span>
<a name="81" /><span class="True">      81:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;floatobject.h&quot;</span>
<a name="82" /><span class="True">      82:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;complexobject.h&quot;</span>
<a name="83" /><span class="True">      83:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;rangeobject.h&quot;</span>
<a name="84" /><span class="True">      84:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;memoryobject.h&quot;</span>
<a name="85" /><span class="True">      85:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;tupleobject.h&quot;</span>
<a name="86" /><span class="True">      86:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;listobject.h&quot;</span>
<a name="87" /><span class="True">      87:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;dictobject.h&quot;</span>
<a name="88" /><span class="True">      88:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;odictobject.h&quot;</span>
<a name="89" /><span class="True">      89:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;enumobject.h&quot;</span>
<a name="90" /><span class="True">      90:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;setobject.h&quot;</span>
<a name="91" /><span class="True">      91:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;methodobject.h&quot;</span>
<a name="92" /><span class="True">      92:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;moduleobject.h&quot;</span>
<a name="93" /><span class="True">      93:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;funcobject.h&quot;</span>
<a name="94" /><span class="True">      94:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;classobject.h&quot;</span>
<a name="95" /><span class="True">      95:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;fileobject.h&quot;</span>
<a name="96" /><span class="True">      96:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pycapsule.h&quot;</span>
<a name="97" /><span class="True">      97:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;traceback.h&quot;</span>
<a name="98" /><span class="True">      98:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;sliceobject.h&quot;</span>
<a name="99" /><span class="True">      99:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;cellobject.h&quot;</span>
<a name="100" /><span class="True">     100:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;iterobject.h&quot;</span>
<a name="101" /><span class="True">     101:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;genobject.h&quot;</span>
<a name="102" /><span class="True">     102:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;descrobject.h&quot;</span>
<a name="103" /><span class="True">     103:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;warnings.h&quot;</span>
<a name="104" /><span class="True">     104:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;weakrefobject.h&quot;</span>
<a name="105" /><span class="True">     105:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;structseq.h&quot;</span>
<a name="106" /><span class="True">     106:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;namespaceobject.h&quot;</span>
<a name="107" /><span class="True">     107:</span> 
<a name="108" /><span class="True">     108:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;codecs.h&quot;</span>
<a name="109" /><span class="True">     109:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pyerrors.h&quot;</span>
<a name="110" /><span class="True">     110:</span> 
<a name="111" /><span class="True">     111:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pystate.h&quot;</span>
<a name="112" /><span class="True">     112:</span> 
<a name="113" /><span class="True">     113:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pyarena.h&quot;</span>
<a name="114" /><span class="True">     114:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;modsupport.h&quot;</span>
<a name="115" /><span class="True">     115:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pythonrun.h&quot;</span>
<a name="116" /><span class="True">     116:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pylifecycle.h&quot;</span>
<a name="117" /><span class="True">     117:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;ceval.h&quot;</span>
<a name="118" /><span class="True">     118:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;sysmodule.h&quot;</span>
<a name="119" /><span class="True">     119:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;osmodule.h&quot;</span>
<a name="120" /><span class="True">     120:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;intrcheck.h&quot;</span>
<a name="121" /><span class="True">     121:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;import.h&quot;</span>
<a name="122" /><span class="True">     122:</span> 
<a name="123" /><span class="True">     123:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;abstract.h&quot;</span>
<a name="124" /><span class="True">     124:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;bltinmodule.h&quot;</span>
<a name="125" /><span class="True">     125:</span> 
<a name="126" /><span class="True">     126:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;compile.h&quot;</span>
<a name="127" /><span class="True">     127:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;eval.h&quot;</span>
<a name="128" /><span class="True">     128:</span> 
<a name="129" /><span class="True">     129:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pyctype.h&quot;</span>
<a name="130" /><span class="True">     130:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pystrtod.h&quot;</span>
<a name="131" /><span class="True">     131:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pystrcmp.h&quot;</span>
<a name="132" /><span class="True">     132:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;dtoa.h&quot;</span>
<a name="133" /><span class="True">     133:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;fileutils.h&quot;</span>
<a name="134" /><span class="True">     134:</span> <span class="f">#</span><span class="n">include</span> <span class="e">&quot;pyfpe.h&quot;</span>
<a name="135" /><span class="True">     135:</span> 
<a name="136" /><span class="True">     136:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* !Py_PYTHON_H */</span>
<a name="137" /><span class="True">     137:</span> </pre>
  </body>
</html>
